package pool;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.experimental.Accessors;


/**
 * @author ex_chenzy59
 * @since 2025/4/11
 * 参考 BaseObjectPoolConfig
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class ObjectPoolConfig {
    /*池中最大空闲对象数*/
    private int maxIdle=5;
    /*池中对象的最大数*/
    private int maxTotal=5;
    /*获取新对象时的等待时长,单位秒,默认5秒,-1表示不等待,即不阻塞*/
    private int maxWait=5;
    /*对象从池中取出后,最大占用时长,单位秒,默认20秒.防止对象长时间不释放*/
    private int maxUse=20;
    /*对象最大空闲时长,单位秒,默认5分钟.如果对象空闲时长达到该值,可能移除该对象*/
    private int maxIdleDuration=300;
    /*池中最小空闲对象数*/
    private int minIdle=1;
    /*在连接空闲时，是否进行有效性检查。如果设置为 true，则会进行检查，可以减少无效连接的积累*/
    private boolean testWhileIdle;
    /*每次最多驱逐数量: 参考 numTestsPerEvictionRun*/
    private int numPerEviction=3;
    /*驱逐线程任务执行间隔,单位秒,小于10秒就不会执行.参考timeBetweenEvictionRuns*/
    private int evictionRunsDuration=-1;

}
